Licensing is a common business model in the software and digital goods industries, serving as an important weapon against pirating of digital goods and ensuring compliance with contractual rights. Piracy, illegally reproducing and distributing a work, has historically been a major problem for manufacturers and providers of digital goods such as software. In a licensing scheme, a purchaser does not actually acquire a computer program outright, but, rather purchases a right to use the software according to license terms that specify the conditions of use: manner, time, location and duration of use, for example. Generally, the licensee's ability to transfer or reassign the license is extremely limited, or completely forbidden.
Early software licenses were based on a trust model, wherein a copy of the license is distributed with the media containing a software program. The license specified the terms of use and the licensee was trusted to comply with the license. Shrink-wrap licenses were printed certificates that accompanied single copies of a digital product distributed on removable media such as CD's or diskettes. A site license, commonly used to sell software to large entities such as corporations, was a single license that permitted installation of multiple copies of software on many computers across the enterprise. As distribution of software via publicly-accessible networks became more common, online licenses came into being, wherein a copy of a license accompanied software downloaded from the network. Typically, the purchaser was required to assent to the license terms before downloading the software. Modernly, computer software licenses have been electronically issued as digital certificates, each paired with a single machine, that can unlock a copy of a software program on that machine.
Digital delivery has emerged as an efficient and profitable method of distributing digital goods such as software. While some vendors of digital goods offer simple downloads from their web sites, these services provide only limited value to the vendor and the vendor's customers. There is a growing demand from end-users for increased services and from vendors for better management and control of the complete delivery process. J. Brentano, T. Pieper, P. Martinelli, B. Thompson, Method and system for managing digital goods, U.S. patent application Ser. No. 10/635,840 (Aug. 5, 2003), which is not admitted to be prior art to the present invention by its inclusion in this Background section, provides a portal from which a vendor of digital goods distributes its goods on a subscription basis to its customer base.
The processes for distributing software and for distributing the licenses that unlock it are closely related. Both are based on the same entitlement data, both are received by the same end users, and both are needed for installation and operation of the product. Software is always evolving, with new releases and bug fixes issued at frequent intervals. Often a customer needs an upgraded version of the software but not a new license. Other times, new license keys are required for major software upgrades. Software licensing has now evolved from pure piracy prevention to enabling the sale of various market-driven configurations of the same product. As product bundles become more intricate, there is a growing need a way to generate and distribute license keys that supports more comprehensive licensing strategies. For example, even in digital distribution environments, release of an upgraded version of a product that requires issuance of an updated set of licensing keys has conventionally required a vendor to manually process an upgrade order to generate the new licensing keys, even though the customer may have already been entitled to the new product. It would be a great advantage to provide a process that spared the vendor the operational overhead and extra cost associated with processing the upgrade order.
There exists, therefore, a need in the art for a method of managing licensing and distributing digital goods that will:                allow customers purchasing software subscriptions or maintenance contracts to access all new versions of software and the required license keys for the entire duration of their existing entitlements;        provide a mechanism for vendors to specify upgraded versions requiring new license keys, in such as way as to be automatically applied to all of their customers' valid subscription entitlements;        notify customers whenever a new set of license keys is required to operate upgraded product versions in which they are entitled;        for any release of software, make the customer aware of which license keys (new or old) are required for the operation of the specific software release; and        generate new license keys using existing entitlement data, previous license key data, and any new customer-input data by interfacing with an underlying license key generator, regardless of the licensing technology used by the software product.        